﻿package com.myxh.genrator;

import java.util.ArrayList;

import com.myxh.compiler.FourElement;

/**
 * 
 * 基本块类的作用：
 * 
 * 抓住源程序运行特征，逐步分析源程序运行整个过程
 * 
 * 
 * 
 * 
 * 基本块入口处应做标记，是其他指令可能要跳转到的。
 * 这也是划分基本块的主要目的。
 * 
 * 因为不可能每个语句都要做标记。
 * 
 * 同时避免了在基本块外对基本块内临时变量占用寄存器情况的多余判断。
 * 
 * @author HuangWeiCun
 * 
 */

public class BaseBlock implements Comparable<BaseBlock> {

	public int id; // 基本块序号,从0开始
	public int importId; // 基本块入口语句的序号
	public ArrayList<FourElement> partBaseBlockList;
	public boolean isGoto;// 基本块入口语句是不是跳转到的语句

	public BaseBlock(int id, int importId,
			ArrayList<FourElement> partBaseBlockList, boolean isGoto) {
		super();
		partBaseBlockList = new ArrayList<FourElement>();
		this.id = id;
		this.importId = importId;
		this.partBaseBlockList = partBaseBlockList;
		this.isGoto = isGoto;
	}

	public int compareTo(BaseBlock o) {

		if (importId < o.importId) {
			return -1;
		}
		
		else if(importId > o.importId){
			return 1;
		}

		return 0;
		
	}




	

}
